Field of the Invention
The present disclosure relates to generating digests of incoming messages. In particular, but not exclusively, the present disclosure relates to measures, including methods, systems and computer program products, for generating records based on incoming messages.
Description of the Related Technology
Tracking and charging for the use of services rendered is a very important task for providers of telecommunications networks. The IP Multimedia Subsystem (IMS) specification, on which most modern telecommunications networks providing telephony or other services are based, describes a Charging Data Function (CDF) which is an important part of the offline charging process in the network. With reference to FIG. 1, various IMS Service Elements (10, 10′) such as S-CSCF and AS comprise Charging Trigger Functions (CTFs) (12, 12′) which use the Diameter Rf interface (14, 14′) to send ACcounting-Request (ACR) messages to the CDF 16. The CDF is responsible for generating Charging Data Records (CDRs) based on the received ACRs, and passes them to the Charging Gateway Function (CGF) 18 over the Ga Interface 20. The CGF is responsible for persistent storage of the CDRs and passing them to the Billing system 22 over the Bx interface 24. This access to the CDRs by the Billing system may be practiced via the CGF exposing an FTP directory containing the CDRs.
In the case of a simple (one-off) billable event, the CDF simply processes the ACR in order to form a CDR, which can then be stored by the CGF after transfer over the Ga interface as specified in 3GPP specification TS.32.295. However, the specification also supports the notion of billable sessions, where the CDF has to receive and compile multiple ACRs in order to form a CDR. Such a session might relate to a phone call, for example, where the charge might depend on the duration of the telephone call, as well as services invoked during that call, such as a transition to include video as well as audio media part-way through a call. Session-based billing is initiated by a START ACR; comprises a number of INTERIM ACRs; and finally is finished by a STOP ACR to indicate that the received ACRs should be compiled to form a CDR.
INTERIM ACRs are sent for a variety of reasons. One reason an ACR is sent is as a heartbeat to indicate the session is ongoing, and that the CDF should continue to bill for it. Another reason is to indicate changes in the session, such as the transition to include video mentioned above. These “heartbeat” ACRs are employed since the CDF cannot guarantee to receive the STOP ACR in the event of some types of failures, and so it should be able to finish billing at some point rather than indefinitely extend the charges for a session where the STOP ACR was not received. Termination of the session in this way is referred to as premature closure and results in a CDR being produced which records the session up to the point of closure.
These features of the Rf interface and the ACRs sent across it, in particular in relation to session-based billing, mean that implementing a CDF involves tracking the current state for each ongoing session, as well as maintaining a timer for each session to track whether the session should be prematurely closed.
It would be desirable to implement at least part of a CDF using modern, cloud-compatible software design paradigms, such as having a stateless cluster of nodes, each node being able to process any incoming ACRs regardless of whether that node has received previous ACRs associated with that session, the cluster being resilient to failure of one of the nodes. However, the state of ongoing sessions as well as the state of timers for each session makes this difficult.